package com.yangcangclub.commons.utils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * cookie常用操作
 */
public class CookieUtil {

    /**
     * 向客户端设置cookie
     * @author tian
     * @param name  cookie名字
     * @param value cookie值
     * @param maxAge cookie生命周期  以秒为单位
     * 若生存时间为负值，代表浏览器关闭Cookie即消失。生存时间为0，代表删除Cookie，生存时间为正数，代表Cookie存在多少秒
     */
    public static void addCookie(HttpServletRequest request,HttpServletResponse response,String name,String value,int maxAge){
        Cookie cookie = new Cookie(name,value);
        cookie.setPath("/");
        //String domain=request.getServerName();
        //cookie.setDomain(domain);

        if(maxAge>0)  cookie.setMaxAge(maxAge);
        response.addCookie(cookie);
    }


    /**
     * 根据名字获取cookie value值
     * @author tian
     * @param name cookie名字
     * @return value值
     */
    public static String getCookieVal(HttpServletRequest request,String name){
        Cookie[] cookies = request.getCookies();//只有本网站留的cookie才会被带回，其它网站不返回
        if(null!=cookies&&name!=null){
            for(int i=0;i<cookies.length;i++){
                if( name.equals(cookies[i].getName())){
                    return cookies[i].getValue();
                }
            }
        }
        return null;
    }

    /**
     * 根据名称删除cookie
     * @author tian
     */
    public static void deleCookieByName(HttpServletResponse response,String name){
        Cookie cookie = new Cookie(name,null);
        cookie.setPath("/");//项目所有目录均有效，这句很关键，否则不敢保证删除
        cookie.setMaxAge(0);//生存时间为0，代表删除Cookie
        response.addCookie(cookie);//重新写入，将覆盖之前的
    }
}